#include "utils/hash_tag.h"
/**
 * 后续可以实现将映射存储在文件中，后续需要直接从文件中读取即可
 */
// 单例哈希表（静态全局变量）
static NodeValMapping* mappings = NULL;

// 初始化单例映射（程序启动时调用）

// 合法数据类型如下（来源于mqtt_handle.c:json_value_to_tag_value函数）
//NEU_JSON_INT:
//NEU_JSON_STR:
//NEU_JSON_DOUBLE:
//NEU_JSON_BOOL:
//NEU_JSON_ARRAY_BOOL:
//NEU_JSON_ARRAY_DOUBLE:
//NEU_JSON_ARRAY_INT64:

void init_mappings() {
    // 示例数据：YYT3,1 -> fCPUTemperature,0x0002
    // json演示
    // {
    //     "ver":"2.16",
    //     "id": "221",
    //     "name": "YYT3",
    //     "val": 1,
    //     "timeout": "30",
    //     "msg": "",
    //     "time": "1565447542"
    // }

    // 修改后的查询json，数据被修改为2
    // {
    //     "ver": "2.12",
    //     "id": "221",
    //     "name": "YYT3",
    //     "val": {
    //       "fCPUTemperature": {
    //         "val": "2"
    //       }
    //     },
    //     "time": "1741941145900"
    //   }
    NodeValMapping* m = (NodeValMapping*)malloc(sizeof(NodeValMapping));
    m->node = strdup("YYT3");
    m->val = strdup("1");
    m->tag = strdup("fCPUTemperature");
    // m->write_num.val_int = 0x0002;
    m->write_num.val_double = 3.3;
    m->t=NEU_JSON_DOUBLE;
    HASH_ADD_KEYPTR(hh, mappings, m->node, strlen(m->node), m);

    // 可添加更多初始化映射...
}

// 查询映射关系
NodeValMapping* find_mapping(const char* node, const char* val) {
    NodeValMapping* tmp;
    HASH_FIND_STR(mappings, node, tmp); // 先根据node查找
    if (tmp && strcmp(tmp->val, val) == 0) {
        return tmp;
    }
    return NULL;
}
